﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Promocot.Models;
using System.IO;

/*
 * Atención: Este controlador no esta siendo usado
 * en ningun area del proyecto, solo es un controlador 
 * que guarda operaciones específicas del sistema.
 */
namespace Promocot.Controllers
{
    public class AdminController : Controller
    {

        ClientomaticDBContainer dbQuery = new ClientomaticDBContainer();

        public ActionResult Index()
        {
            return View();
        }

        public ActionResult crearEmpresas() 
        {

            Empresa actual = new Empresa();
            return View(actual);

        }

        [HttpPost]
        public ActionResult crearEmpresas(Empresa actual)
        {

            dbQuery.EmpresaSet.AddObject(actual);

            dbQuery.SaveChanges();

            return RedirectToAction("Index", "Home");

        }

        public ActionResult listarEmpresas() 
        {

            var empresas = dbQuery.EmpresaSet.ToList<Empresa>();


            return View(empresas);
        
        }

        public ActionResult detalle_empresa(int id)
        {
            ViewBag.empresas = (from p in dbQuery.EmpresaSet
                                where p.cod_empresa == id
                                select p).Single<Empresa>();


            /*
             Otra instruccion hubiee podido ser:
             * 
             *  ViewBag.empresas = dbQuery.EmpresaSet.ToList<Empresa>().Find(p => p.cod_empresa == id);
             * 
             */

            return View();
        }


        public ActionResult crearUsuarios()
        {

            Usuario actual = new Usuario();

            ViewBag.empresas = dbQuery.EmpresaSet.ToList<Empresa>();
            return View(actual);

        }

        [HttpPost]
        public ActionResult crearUsuarios(Usuario actual)
        {

            List<byte> num = new List<byte>();
            num.Add(byte.MinValue);
            dbQuery.UsuarioSet.AddObject(actual);


            actual.activo = false; //Tengo que revisar bin ahi a ver q guarda
            actual.salt =   false;
            dbQuery.SaveChanges();

            return RedirectToAction("Index", "Home");

        }


        public ActionResult crearRoles() 
        {

            Rol nuevo = new Rol();
            return View(nuevo);
        }


        [HttpPost]
        public ActionResult crearRoles(Rol actual)
        {



            dbQuery.RolSet.AddObject(actual);

            dbQuery.SaveChanges();

            return RedirectToAction("Index", "Home");
        }

        public ActionResult listarRoles() 
        {

            List<Rol> roles_actuales = dbQuery.RolSet.ToList<Rol>();
            return View(roles_actuales);
        }

        public ActionResult rol_usuario()
        {

            ViewBag.usuarios = dbQuery.UsuarioSet.ToList<Usuario>();
            ViewBag.roles = dbQuery.RolSet.ToList<Rol>();

            return View();
        }

        [HttpPost]
       /* public ActionResult rol_usuario(Usuario_Rol nuevo)
        {

            dbQuery.Usuario_RolSet.AddObject(nuevo);
            dbQuery.SaveChanges();

            return RedirectToAction("Index", "Home");
        }*/


        public ActionResult uprecurso() 
        {

            Recurso nuevo = new Recurso();

            ViewBag.empresas = dbQuery.EmpresaSet.ToList<Empresa>();

            ViewBag.clasificaciones = dbQuery.ClasificacionSet.ToList<Clasificacion>();


            return View(nuevo);
        }

        [HttpPost]
        public ActionResult uprecurso(Recurso actual,HttpPostedFileWrapper direccion)
        {
            var path = "";
            var fileName = "";
            if (direccion.ContentLength > 0)
           { 
                fileName = Path.GetFileName(direccion.FileName);
                path = Path.Combine(Server.MapPath("~/Content/Recursos"), fileName);
                direccion.SaveAs(path);
            }
            if (actual.tipo != 3)
            {
                /*actual.direccion = path;*/

                actual.direccion = Request.Url.Authority+"/Content/Recursos/"+fileName;
                
            }


            dbQuery.RecursoSet.AddObject(actual);

            dbQuery.SaveChanges();


            return RedirectToAction("Index", "Home");
        }

        public ActionResult crearClasificacion() 
        {

            Clasificacion nueva = new Clasificacion();
            ViewBag.empresas = dbQuery.EmpresaSet.ToList<Empresa>();
            ViewBag.clasificaciones = dbQuery.ClasificacionSet.ToList<Clasificacion>();
            
            return View(nueva);
        }

        [HttpPost]
        public ActionResult crearClasificacion(Clasificacion actual)
        {

            actual.nivel = false;
            dbQuery.ClasificacionSet.AddObject(actual);


            dbQuery.SaveChanges();

            return RedirectToAction("Index", "Home");
        }

        [HttpPost]
        public JsonResult Registrar(FormCollection form) {


            Resultado send = new Resultado();


            return Json(send,JsonRequestBehavior.AllowGet);
        }
    }


}
